#pragma once
#include <iostream>
#include <typeinfo>
#include "Point.h"

enum colour { RED, GREEN, BLUE, BLACK };

class Shape
{
protected://������� ���������� �����, �� �������� ������� ������������ ������
	colour m_colour;
	
public:

	Shape(colour colour = BLACK);
	Shape(const Shape& other);
	virtual ~Shape() {};

	virtual Shape* CopyObj()const = 0;
	virtual const Point& Get_center()const = 0;
	
	virtual double Get_area()const = 0;
	virtual double Get_distance()const = 0;
	virtual double Get_colour() const;

	virtual Shape& operator=(const Shape& other);
	virtual bool operator==(const Shape& other)const;

	//virtual void Inflate(int) const = 0;
	friend std::ostream& operator<<(std::ostream& os, const Shape& shape);
};

//std::ostream& operator<<(std::ostream& os, const Shape& shape);